Это специальная команда которая загружает 1 байт в регистр AL по адресу DS:SI и изменяет потом регистр SI в зависимости от флага направления. Итак, смотрим сразу код
MODEL SMALL STACK 256 DATASEG str1 DB 'firststeps $' CODESEG Start: mov ax,@data ; установка в ds адpеса mov ds,ax ; сегмента данных mov cl,10 ; настройка счетчика mov si,OFFSET str1 ; адрес строки cld ; направление WriteLoop: lodsb ; Загрузить символ mov dl,al ; для вывода Call WriteChar loop WriteLoop Exit: CALL ExitProgramm INCLUDE function.asm End Start
У нас есть строка в сегменте данных. Эта строка адресуется по отношению к регистру DS. Это регистр данных. Вы все про это знаете. Командой
mov si,OFFSET str1
Мы указываем SI на смешение относительно сегмента данных. Но он же у нас DS, вот и получается правильная адресация ds:si проверим в отладчике.
Смотрим дальше после команды lodsb измениться AL и SI. В AL будет загружено значение а SI увеличиться на 1.
Дальше все просто, я вывожу символ воспользовавшись функций из шага Шаг 36 - Функция 02h Вывод символа и организовав цикл через LOOP. Все повториться, SI будет увеличен и в AL новый символ.